iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0

將日期轉成字串是為了可讀性,但將字串轉為日期是為了日期的運算,這邊會介紹一些關於日期的轉換應用

  • 日期轉成字串:TO_CHAR(date, ‘format_model’)
  • 字串轉為日期:TO_DATE(CHAR[,format_model’])
    規則
  1. 格式必須使用單引號括起來
  2. 大小寫有差別
  3. 元素間要用分割號隔開
  4. 輸出日期月份會自動用空格填補,如果要去除前面可以加fm,移除前面的前導0

空值轉換函數
當資料欄是空值時他會有三種可能

  1. 不知道他的值
  2. 未指派
  3. 沒有值
    在SQL中空值等於無限大,所以需要經過運算才可以
  4. NVL(expr1,expr2):將expr1空值轉換成expr2
    ex NVL(hire_date,‘03-May-2025’)
    如果hire_date是空值則回傳03-May-2025
  5. NVL2(expr1,expr2,expr3):如果expr1不等於空值則返回expr2;如果expr1等於空值則回傳expr3
  6. NULLIF(expr1,expr2):如果expr1等於expr2返回空值 如果expr1不等於expr2則返回expr1
  7. COALESCE(expr1,expr2,expr3,….expr n):返回印數第一個非空值的引數

若…則…否則..
SELECT可以用「CASE表達式」或「DECODE函數」來表達程式語言相似的「若…則…否則」
SELECT 欄位[,…],CASE 表達式 WHEN 比較式1 THEN返回值1
[ WHEN 比較式2 THEN返回值2
WHEN 比較式N THEN返回值N
ELSE 預設返回值]
END
FROM 表格
[WHERE…條件]
[ORDER BY 欄位]

  • CASE前面必須加逗號
  • CASE後面expr可為欄位或表達式
  • 各比較式條件直接寫比較式,不再寫欄位名稱
  • 返回值可為欄位或表達式
  • END後面可以加字串當作別名

SELECT 欄位[, 欄位,…],DECODE (expr 比較條件1, 返回值1
[,比較條件2, 返回值2
,比較條件N,返回值N]
[,預設返回值]
FROM 表格
[WHERE…條件]
[ORDER BY 欄位]

  • DECODE內建expr可為欄位或表達式
  • 比較條件直接寫比較值 不再寫欄位名稱
  • 返回可為欄位或表達式鞥DECODE函數後面可以加上字串當結果別名

上一篇
Day 9 轉換函數
下一篇
Day 11 合併多張表格資料
系列文
跟著生成式AI一起從零開始學習資料庫,12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言